// 项目中创建一个子模块, 相当于 vuex中的module, 用来管理商品相关的数据

import { createSlice } from '@reduxjs/toolkit';
import axios from 'axios'
const userSlice = createSlice({
    name: 'user', // 给切片命名: 相当于vuex中命名空间
    initialState: { // 定义该切片中的初始数据
        username: '阳康',
        age: 20,
        collegeArr: []  // 大学数组
    },
    reducers: { // 定义操作state 数据 的方法,这里定义的方法都是同步方法
        editusername: (state, action) => {
            // 该state 就是上面的initialState 对象
            state.username = action.payload
        },
        addage: (state, action) => {
            // setTimeout(() => {
            state.age += action.payload
            // }, 2000)
        },
        setCollege: (state, action) => {
            state.collegeArr = action.payload
        }
    }
});


export const { editusername, addage, setCollege } = userSlice.actions;

// vuex 中的异步是通过action ,然后在action 的方法中调用同步方法muation中的方法实现异步操作的
// 定义异步方法Asyncaddage , 
export const Asyncaddage = (payload) => (dispatch) => {
    // 在异步方法中调用同步方法,实现修改state 的数据, 当然也可以直接写同步方法
    setTimeout(() => {
        dispatch(addage(payload))
    }, 2000)
}
export const AsyncsetCollege = () => (dispatch) => {
    // 执行一个axios 数据请求
    axios.get('https://api.i-lynn.cn/college').then(res => {
        console.log('res', res);
        dispatch(setCollege(res.data.data.list1))
    })

}
// 导出切片
export default userSlice
